package app.repositories;

import java.text.ParseException;
import java.util.List;

import app.models.Consulta;
import app.models.Paciente;
import app.models.enums.StatusConsulta;

public interface ConsultaRepository {
	 
	void create(Consulta entity);
	
	Consulta update(Consulta entity);
	
	void delete(Consulta entity);
	
	Consulta find(Long id);
	
	List<Consulta> findAll();
	
	List<Consulta> findAllByFilter(String filter);
	
	String findFirstYear();
	
	List<Consulta> findConsultasByDate(Integer day, Integer month, Integer year);
	
	List<Consulta> findConsultasByHourAndDateAndByEspecialidade(Consulta consulta);
	
	List<Consulta> findConsultasByFilters(Consulta consulta);
	
	List<Consulta> findLastConsultas();
	
	List<Consulta> findNextConsultas();
	
	Integer findConsultasInDayOnMonth(Consulta consulta, String data);
	
	Paciente findPacienteByConsultaId(Long id);
	
	Consulta findConsultaByPacienteIdAndByTimeAndByDate(Consulta consulta);
	
	List<Consulta> findLatePaymentsByPacienteId(Integer pacienteId);
	
	Consulta findConsultaByEspecialistaIdAndByTimeAndByDate(Consulta consulta);
	
	List<Consulta> consultasBetweenDates(String dataInicio, String dataFim);
	
	List<Consulta> consultasBetweenDatesAndFilter(Consulta consulta, String dataInicio, String dataFim);
	
	List<Consulta> consultasBetweenDatesAndStatus(String dataInicial, String dataFinal, List<StatusConsulta> statusConsulta);
	
	List<Consulta> findAllForTask() throws ParseException;
	
}
